package schema

import (
	"errors"
)

// 支付宝APP支付参数
type AliAppParams struct {
	OrderID  string `json:"order_id"`
	Describe string `json:"describe"`
	Price    int64  `json:"price"`
	Url      string `json:"url"`
	Tag      string `json:"tag"`
}

func (a *AliAppParams) Validate() error {
	if a.OrderID == "" ||
		a.Describe == "" ||
		a.Price <= 0 {
		return errors.New("缺少必要参数")
	}
	return nil
}

// AliAppCheckParams 支付宝APP同步校验参数
type AliAppCheckParams struct {
	Result string `json:"result"`
}

func (a *AliAppCheckParams) Validate() error {
	return nil
}

// AliAppCheckResult 支付宝APP同步校验结果
type AliAppCheckResult struct {
	Result string `json:"result"`

	RecordID string `json:"record_id"`
	OrderID  string `json:"order_id"`
	Price    int64  `json:"price"`
	Code     string `json:"code"`
	Msg      string `json:"msg"`
	SubCode  string `json:"sub_code"`
	SubMsg   string `json:"sub_msg"`
}

// AliWebPayResult 支付宝支付结果回调
type AliWebPayResult struct {
	ID                  int64  `json"_id" bson:"_id"`
	NotifyTime          string `json:"notify_time" bson:"notify_time"`
	NotifyType          string `json:"notify_type" bson:"notify_type"`
	NotifyID            string `json:"notify_id" bson:"notify_id"`
	AppId               string `json:"app_id" bson:"app_id"`
	Charset             string `json:"charset" bson:"charset"`
	Version             string `json:"version" bson:"version"`
	SignType            string `json:"sign_type" bson:"sign_type"`
	Sign                string `json:"sign" bson:"sign"`
	TradeNum            string `json:"trade_no" bson:"trade_no"`
	OutTradeNum         string `json:"out_trade_no" bson:"out_trade_no"`
	OutBizNo            string `json:"out_biz_no" bson:"out_biz_no"`
	BuyerID             string `json:"buyer_id" bson:"buyer_id"`
	BuyerPayAmount      string `json:"buyer_pay_amount" bson:"buyer_pay_amount"`
	RefundFee           string `json:"refund_fee" bson:"refund_fee"`
	Subject             string `json:"subject" bson:"subject"`
	PayMentType         string `json:"payment_type" bson:"payment_type"`
	GmtPayMent          string `json:"gmt_payment" bson:"gmt_payment"`
	GmtClose            string `json:"gmt_close" bson:"gmt_close"`
	SellerEmail         string `json:"seller_email" bson:"seller_email"`
	BuyerEmail          string `json:"buyer_email" bson:"buyer_email"`
	SellerID            string `json:"seller_id" bson:"seller_id"`
	Price               string `json:"price" bson:"price"`
	TotalFee            string `json:"total_fee" bson:"total_fee"`
	Quantity            string `json:"quantity" bson:"quantity"`
	Body                string `json:"body" bson:"body"`
	Discount            string `json:"discount" bson:"discount"`
	IsTotalFeeAdjust    string `json:"is_total_fee_adjust" bson:"is_total_fee_adjust"`
	UseCoupon           string `json:"use_coupon" bson:"use_coupon"`
	RefundStatus        string `json:"refund_status" bson:"refund_status"`
	GmtRefund           string `json:"gmt_refund" bson:"gmt_refund"`
	TradeNo             string `json:"trade_no" bson:"trade_no"`
	OutTradeNo          string `json:"out_trade_no" bson:"out_trade_no"`
	OpenID              string `json:"open_id" bson:"open_id"`
	BuyerLogonID        string `json:"buyer_logon_id" bson:"buyer_logon_id"`
	TradeStatus         string `json:"trade_status" bson:"trade_status"`
	TotalAmount         string `json:"total_amount" bson:"total_amount"`
	ReceiptAmount       string `json:"receipt_amount" bson:"receipt_amount"`
	PointAmount         string `json:"point_amount" bson:"point_amount"`
	InvoiceAmount       string `json:"invoice_amount" bson:"invoice_amount"`
	SendPayDate         string `json:"send_pay_date" bson:"send_pay_date"`
	AlipayStoreID       string `json:"alipay_store_id" bson:"alipay_store_id"`
	StoreID             string `json:"store_id" bson:"store_id"`
	TerminalID          string `json:"terminal_id" bson:"terminal_id"`
	FundBillListStr     string `json:"fund_bill_list" bson:"fund_bill_list"`
	StoreName           string `json:"store_name" bson:"store_name"`
	BuyerUserID         string `json:"buyer_user_id" bson:"buyer_user_id"`
	DiscountGoodsDetail string `json:"discount_goods_detail" bson:"discount_goods_detail"`
	IndustrySepcDetail  string `json:"industry_sepc_detail" bson:"industry_sepc_detail"`
	PassbackParams      string `json:"passback_params" bson:"passback_params"`
}
